package T2_10;

import java.util.Arrays;
import java.util.OptionalInt;

public class T5 {
    public int maxArea(int[] height) {
        /**
          * @Description : 双指针解法
          * @Author : 黄鹏飞
          * @Param : height
          * @return : int
          * @Date : 2024/10/23 19:09
          * @Version : 1.0
          **/
        //定义头和尾指针
        int head=0;
        int rear=height.length-1;
        int concent=0;
        while(head<rear){
            /*若向内 移动短板 ，水槽的短板 min(h[i],h[j]) 可能变大，因此下个水槽的面积 可能增大 。
            若向内 移动长板 ，水槽的短板 min(h[i],h[j]) 不变或变小，因此下个水槽的面积 一定变小 。*/
            //所以只需要让短的板子移动
            concent=height[head]<height[rear]?Math.max(concent,(rear-head)*height[head++]):
                    Math.max(concent,(rear-head)*height[rear--]);
        }
        //暴力解法
       /* int boxlong;
        int[] concent = new int[height.length*height.length];
        int index=0;
        //1 遍历数组，让数组中的每个数两两相乘
        for (int i = 0; i <height.length ; i++) {
            for (int j=0;j<height.length;j++){
                //2 比较外层遍历到的元素和内层遍历到的元素
                boxlong=Math.min(height[i],height[j]);
                //3 让较小的元素和二者索引位置的差值相乘
                // 4 存入数组
                concent[index++]=boxlong*(j-i);
            }
        }
        //5 得到最大值
        int max = concent[0];
        for (int num : concent) {
            if (num > max) {
                max = num; // 更新最大值
            }
        }
        return max;*/
        return concent;

    }
}
